/**
 * @Description RedisDaoImpl.java
 * @author xu_cc [18724000100@163.com]
 * @date 创建时间：2017年11月3日 下午2:49:07
 */
package com.solution.admin.home.dao.impl;

import java.util.concurrent.TimeUnit;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository;

import com.solution.admin.home.dao.RedisDao;

/**
 * redis操作类
 * 
 * @author xu_cc
 * @date 创建时间：2017年11月3日 下午3:07:49
 */
@Repository
public class RedisDaoImpl implements RedisDao {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    /** 默认缓存时间 */
    private static final int DEFAULT_CACHE_SECONDS = 60 * 60 * 1;// 单位秒 设置成一个钟

    /**
     * 获取过期时间（秒）
     * 
     * @param key
     * @return Long
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午4:07:38
     */
    public Long getExpire(String key) {
        return redisTemplate.getExpire(key, TimeUnit.SECONDS);
    }

    /**
     * 为指定数据设置超时时间
     * 
     * @param key
     * @param seconds
     * @return boolean
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:47:20
     */
    @Override
    public boolean expire(String key, int seconds) {
        return redisTemplate.expire(key, seconds, TimeUnit.SECONDS);
    }

    /**
     * 删除指定key的数据
     * 
     * @param key
     *            void
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:46:25
     */
    @Override
    public void del(String key) {
        redisTemplate.delete(key);
    }

    /**
     * 根据key获取value
     * 
     * @param key
     * @return String
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:45:45
     */
    @Override
    public String get(String key) {
        org.springframework.data.redis.core.ValueOperations<String, String> valueOper = redisTemplate.opsForValue();
        return valueOper.get(key);
    }

    /**
     * 保存一个对象到Redis中，在设置时间内有效（秒）
     * 
     * @param key
     * @param value
     * @param seconds
     * @return Boolean
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:42:52
     */
    @Override
    public boolean save(String key, String value, int seconds) {
        org.springframework.data.redis.core.ValueOperations<String, String> valueOper = redisTemplate.opsForValue();
        valueOper.set(key, value, seconds, TimeUnit.SECONDS);
        return true;
    }

    /**
     * 保存一个对象到Redis中（设置默认超时时间）
     * 
     * @param key
     * @param value
     * @return Boolean
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:42:52
     */
    @Override
    public boolean save(String key, String value) {
        org.springframework.data.redis.core.ValueOperations<String, String> valueOper = redisTemplate.opsForValue();
        valueOper.set(key, value, DEFAULT_CACHE_SECONDS, TimeUnit.SECONDS);
        return true;
    }

    /**
     * 保存一个对象到Redis系统中，除非手动删除，否则永久有效
     * 
     * @param key
     * @param value
     * @return Boolean
     * @author xu_cc
     * @throws Exception
     *             exception
     * @Date 创建时间：2017年11月3日 下午2:42:52
     */
    @Override
    public boolean saveSys(String key, String value) {
        org.springframework.data.redis.core.ValueOperations<String, String> valueOper = redisTemplate.opsForValue();
        valueOper.set(key, value);
        return true;
    }

}
